package quality.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collection;

import facilito.modelo.Proveedor;
import quality.modelo.Empleado;
import quality.util.ConexionDB;

public class EmpleadoDAO extends BaseDAO {

	
	// #########################################
	public Collection<Empleado> listar() throws Exception {

		String query = "select * from Empleado";

		Connection con = null;
		PreparedStatement ps = null;
		ResultSet rs = null;

		try {
			
			con = (Connection) ConexionDB.obtenerConexion();
			ps = con.prepareStatement(query);
			rs = ps.executeQuery();
			
			Collection<Empleado> lista = null;
			
			while(rs.next()){
				Empleado empleado = new Empleado();
				empleado.setCodEmpleado(rs.getInt(1));
				empleado.setCodigo(rs.getString(2));
				empleado.setContrasena(rs.getString(3));
				empleado.setNombres(rs.getString(4));
				empleado.setApellidos(rs.getString(5));
				empleado.setTelefono(rs.getString(6));
				empleado.setCelular(rs.getString(7));
				empleado.setDNI(rs.getString(8));
				empleado.setDireccion(rs.getString(9));
				empleado.setEstado(rs.getInt(10));
				empleado.setObservaciones(rs.getString(11));
				lista.add(empleado);
			}
			
			return lista;
			
		} catch (Exception e) {
			System.err.println(e.getMessage());
			throw new Exception(e.getMessage());
		} finally {
			this.cerrarResultSet(rs);
			this.cerrarStatement(ps);
			this.cerrarConexion(con);
		}
	}
	
	// #########################################
	public int insertar(Empleado empleado) throws Exception{
		
		String query = "insert into Empleado (Codigo,Contrasena,Nombres,Apellidos,Telefono,Celular,DNI,Direccion,Estado,Observaciones) values (?,?,?,?,?,?,?,?,?,?)";

		Connection con = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		
		try {
			con = ConexionDB.obtenerConexion();
			ps = con.prepareStatement(query);
			ps.setString(1, empleado.getCodigo());
			ps.setString(2, empleado.getContrasena());
			ps.setString(3, empleado.getNombres());
			ps.setString(4, empleado.getApellidos());
			ps.setString(5, empleado.getTelefono());

			int i = ps.executeUpdate();

			// ########## Obtener el ultimo id
			int codigo = 0;
			query = "select last_insert_id()";
			ps = con.prepareStatement(query);
			rs = ps.executeQuery();
			if (rs.next()) {
				codigo = rs.getInt(1);
			}
			if (i != 1) {
				throw new SQLException("No se pudo insertar");
			}

			cliente.setCodCliente(codigo);

			return cliente.getCodCliente();
	}
}
